package com.ruoyi.core.service;

import com.ruoyi.common.core.domain.entity.ClientUser;
import com.ruoyi.core.domain.BatchClientUserSummary;
import com.ruoyi.core.domain.SegmentTimeUnit;
import com.ruoyi.core.domain.custombean.BatchProductResult;
import com.ruoyi.core.domain.custombean.ClientUserBatchQuery;
import com.ruoyi.core.domain.custombean.ClientUserBatchQueryResult;
import com.ruoyi.core.domain.custombean.ClientUserProductUsageRightQueryResult;
import com.ruoyi.core.vo.BatchClientUserCreateOperationVO;

import java.util.Date;
import java.util.List;

/**
 * @Description:
 * @Company: 北京卡拉卡尔股份技术有限公司
 * @Author: Darren Ho
 * @Date: 10/16/2020 15:54
 */
public interface BatchClientUserSummaryService {

    Boolean create(BatchClientUserCreateOperationVO batchClientUserCreateOperationVO);

    List<BatchClientUserSummary> findBatchClientUserSummary(BatchClientUserSummary batchClientUserSummary);

    List<BatchClientUserSummary> findByIdSet(Long[] ids);

    Boolean deleteByIdSet(Long[] ids);

    List<ClientUserBatchQueryResult> findBatchClientUser(ClientUserBatchQuery clientUserBatchQuery);

    List<ClientUserBatchQueryResult> findClientUserByUserIdSet(Long[] ids);

    List<BatchProductResult> getPermissionList(Long id);

    Boolean updateStatusToDelete(Long id);

    class BatchClientUserSummaryParam{
        private BatchClientUserSummary batchClientUserSummary;

        private List<ClientUser> clientUsers;

        private List<Long> productIds;

        private Long segment;

        /**
         * 时效单位
         */
        private SegmentTimeUnit timeUnit = SegmentTimeUnit.DAY;

        private Date now;

        private String remark;

        public String getRemark() {
            return remark;
        }

        public void setRemark(String remark) {
            this.remark = remark;
        }

        public BatchClientUserSummary getBatchClientUserSummary() {
            return batchClientUserSummary;
        }

        public void setBatchClientUserSummary(BatchClientUserSummary batchClientUserSummary) {
            this.batchClientUserSummary = batchClientUserSummary;
        }

        public List<ClientUser> getClientUsers() {
            return clientUsers;
        }

        public void setClientUsers(List<ClientUser> clientUsers) {
            this.clientUsers = clientUsers;
        }

        public List<Long> getProductIds() {
            return productIds;
        }

        public void setProductIds(List<Long> productIds) {
            this.productIds = productIds;
        }



        public Date getNow() {
            return now;
        }

        public void setNow(Date now) {
            this.now = now;
        }

        public Long getSegment() {
            return segment;
        }

        public void setSegment(Long segment) {
            this.segment = segment;
        }

        public SegmentTimeUnit getTimeUnit() {
            return timeUnit;
        }

        public void setTimeUnit(SegmentTimeUnit timeUnit) {
            this.timeUnit = timeUnit;
        }
    }
}
